Обзор фреймворков для создания серверного приложения на nodejs

Что такое Node.js?

Node или Node.js — серверная реализация языка программирования JavaScript, основанная на движке V8. Предназначена для создания масштабируемых распределённых сетевых приложений, таких как веб-сервер. Node.js по целям использования сходен с каркасами Twisted на языке Python и EventMachine на Ruby. В отличие от большинства программ JavaScript, этот каркас исполняется не в браузере клиента, а на стороне сервера.

Что такое framework?

framework — это набор инструментов, библиотек, хорошего кода, который поможет превратить рутинные задачи в модули, которые можно использовать неоднократно. Задача framework’а — позволить дизайнеру или разработчику сфокусироваться на задачах, являющимися уникальными в рамках данного проекта. Иначе говоря, не изобретать колесо раз за разом.

Теперь непосредственно сами framework’и

Рассмотрим такие вспомогательные средства для серверной разработки на JS, как:

  • Express
  • Meteor
  • Mean
  • Koa
  • Hapi
  • Sails
  • Socket

Express

Express — это минималистичный и гибкий веб-фреймворк для приложений Node.js, предоставляющий обширный набор функций для мобильных и веб-приложений.

Express, как хорошо известно, развивается своим путём, в отличие от других фреймворков, во многом опирающихся на Rails, но также много позаимствовал из другого Ruby-фреймворка под названием Sinatra. Концепция простая: фреймворк предоставляет достаточно возможностей для запуска и работы «на лету», не требуя много времени на подготовку.

Это фреймворк, делающий создание большинства сайтов очень простым. Первое, что вам нужно будет сделать — установить его.
$ npm install express --save
Вместе с командой node у вас появится команда npm. Этот инструмент даёт вам доступ к колоссальному количеству модулей, созданных сообществом, и Express как раз один из них.

Плюсы данного framework’а:

1)Низкий порог вхождения, Express — это практически стандарт Node.js-приложения.
2)Полная кастомизация.

Минусы:

1)Все ресурсы необходимо создавать вручную и, в результате, появится много повторного кода или хуже — собственная библиотека.
2)Каждый ресурс требует тестирования или простой проверки на 500-ую ошибку.
3)Рефакторинг станет болезненным, так как будет необходимо править всё и везде.
4)Нету стандартного подхода, нужно искать свой.
->Пример разработки на Express
->Официальный сайт

Meteor

Meteor является MVC (Model-View-Controller) фреймворком с открытым исходным кодом, с помощью которого вы можете создавать Web-приложения реального времени. Одна из важнейших особенностей платформы состоит в том, что она позволяет использовать один и тот же код как на стороне сервера, так и на стороне клиента. Между сервером и клиентом, как правило, передаются данные, а не HTML-код. Фреймворк поддерживает OS X, Windows и Linux. Его реактивная модель программирования позволяет создавать приложения используя меньше JavaScript кода.

Плюсы данного framework’а:

1)Код сервера и клиента пишется на одном языке
2)Удобно отлаживать код прямо из браузера
3)Можно быстро продемонстрировать состояние проекта клиенту при помощи meteor deploy

Минусы:

1)Не годится для крупных проектов
2)Совершенно не годится для мобильных устройств из-за большого количества JavaScript
3)В коде некоторые тривиальные задачи приходится решать при помощи громоздких конструкций
->Пример разработки на Meteor
->Официальный сайт

Mean

MEAN (аббревиатура от MongoDB, Express.js, Angular.js, Node.js) — набор (комплекс) серверного программного обеспечения, который используется для веб-разработки. На уровне клиента, сервера и базы данных весь стек MEAN написан на JavaScript. Смещение базовой платформы с ОС (Linux) к среде исполнения JavaScript (Node.js) несет с собой независимость от ОС: Node.js работает на Windows и OS X так же, как и на Linux.

Главный сдвиг MEAN заключается в переходе от традиционного генерирования страниц на стороне сервера к ориентации на одностраничные приложения (SPA) на стороне клиента.
->пример разработки на Mean
->Официальный сайт

Koa

Команда разработчиков фреймворка Express.js создала еще один фреймворк под названием Koa.js — футуристический фреймворк следующего поколения для Node.js, который обещает быть более кратким и ярким, в сравнении с Express.js. Koa.js сфокусирован на создании веб приложений и API, его главное преимущество это генераторы, которые являются отличным способ избежать колбеков, а также помощь разработчикам в исправлении ошибок.
->Разработка приложения на koajs
->Официальный сайт

Hapi

Менее известный фреймворк, который разрабатывается командой Walmart Labs. В отличие от Express у него несколько другой подход, предоставляющий больший функционал сразу из коробки. К плюсам можно отнести полный контроль над приемом запросов и детальная справка с генерацией документации.

Плюсы данного framework’а:

1)Полный контроль над приёмом запросов.
2)Детальная справка с генерацией документации.

Минусы:

1)hapi, также как Express, даёт отличные возможности, но как их использовать, вы должны понять сами.
->Официальный сайт

Sails

Sails.js — это MVC (Model-View-Controller) фреймворк, который позволяет легко и быстро создавать Node.js приложения. Sails.js лучше всего подходит для создания реалтаймовых приложений. Он разработан на основе шаблона MVC, как Ruby On Rails, но также поддерживает требования современных приложений: программные интерфейсы с масштабируемой, сервисно-ориентированной архитектурой. Этот фреймворк особенно хорошо подходит для разработки чатов, инструментальных панелей реального времени и многопользовательских игр.
->Официальный сайт

Socket

Socket. IO — JavaScript библиотека для веб-приложений и обмена данными в реальном времени. Состоит из двух частей: клиентской, которая запускается в браузере и серверной для node.js. Оба компонента имеют похожее API.

Плюсы:

1)Мощный и простой в использовании
2)Используется многими крупными компаниями
->Официальный сайт
->Использование библиотеки Socket
->Еще один пример

Заключение

Собственно, на этом мы расмотрели несколько framework’ов для серверной разработки на JS. Для более детального погружения необходимо воспользоваться ссылками на официальные сайты.